'''
类属性;类中方法外的变量称为类属性，被该类的所有表对象所共享   print（Student.native_place）  访问类属性
类方法：使用@classmethod修饰的方法，使用类名直接访问的方法  Student.cm()  调用类方法
静态方法：使用@staticmethod修饰的主法，使用类名直接访问的方法 Student.sm() 调用静态方法
'''
class Student:
    native_place = '吉林'  # 直接写在类里的变量，叫做类属性

    # 初始化方法
    def __init__(self, name, age):
        self.name = name  # self.name称为实体属性，这里是进行了一个赋值操作
        self.age = age

        # 这个self你写也得写，你不写它也在

    def eat(self):  # 叫实例方法       值得一提，它的形式和函数的定义有点像，但是在类之外定义的才叫函数，在类里定义的叫方法
        print('学生在吃饭...')

    # 静态方法
    @staticmethod
    def method():  # 静方法的（）是不允许写self的
        print('我使用了staticmethod进行修饰，所以我是静态方法')

    # 类方法
    @classmethod
    def cm(cls):
        print('我是类方法，因为我使用了classmethod进行修饰')

    #类属性的使用方式
  #print(Student.native_place)
stu1=Student('张三',20)
stu2=Student('李四',30)
print(stu1.native_place)
print(stu2.native_place)
Student.native_place='天津'
print(stu1.native_place)
print(stu2.native_place)
print('--------------类方法的使用方式______________')
Student.cm()
print('---------------静态方法------------------')
Student.method()